#include <bits/stdc++.h>
using namespace std;
int main() {
  // 5 8 8
  // 21
  // 8 13   -> 21
  //   8 5  -> 13
  // 
  // 5 8 8 5
  // 26
  // 10 + 16
  // 逆向思考

  // a < b < c
  // (a + b) * 2 + c
  // 2a + 2b + c
  // (a + c) * 2 + b
  // 2a + b + 2c
  // (b + c) * 2 + a
  // a + 2b + 2c
  // 简单的证明

  // a < b < c < d < e
  // c < d < a+b < e
  // a+b < e < c+d
  // a+b+e < c+d
  // a+b+e+c+d

  // push
  // select mini * 2, erase/pop
  // push
  // priority_queue
  int n;
  cin >> n;
  using u64 = unsigned long long;
  priority_queue<u64, vector<u64>, greater<u64>> q;
  while (n--) {
    int x;
    cin >> x;
    q.push(x);
  }
  u64 ans = 0;
  while (q.size() > 1) {
    u64 top1 = q.top();
    q.pop();
    u64 top2 = q.top();
    q.pop();
    ans += top1 + top2;
    q.push(top1 + top2);
  }
  cout << ans << endl;

}